
package Controlador;

import Modelo.Aspirante;
import Modelo.Bacante;
import Modelo.Contrato;
import Modelo.Entrevista;
import Modelo.Evaluacion;
import Modelo.Experiencia;
import Modelo.ModeEntrevista;
import Modelo.ModelAspi;
import Modelo.ModelContrato;
import Modelo.ModelEvaluacion;
import Modelo.ModelExperiencia;
import Modelo.ModelPsicotecnica;
import Modelo.Psicotecnica;
import java.util.Iterator;
import java.util.LinkedList;
import javax.swing.JOptionPane;
import javax.swing.JTable;
import javax.swing.JTextField;
import javax.swing.table.DefaultTableModel;


public class AplicativoContrato {
    AplicativoEvaluados eva;
    AplicativoAspi  Aspi;
    AplicativoBacante Bacan;
    ModelContrato mod;
    LinkedList lista;
    DefaultTableModel tablaModelo;
    private Contrato ex= new Contrato();

    public AplicativoContrato( ModelContrato mod,AplicativoBacante Bacan,AplicativoAspi  Aspi,AplicativoEvaluados eva) {
        this.mod=mod;
        lista=new LinkedList();
        tablaModelo=new DefaultTableModel();
        this.Bacan=Bacan;
        this.Aspi=Aspi;
        this.eva=eva;
    }

    public AplicativoAspi getAspi() {
        return Aspi;
    }

    public void setAspi(AplicativoAspi Aspi) {
        this.Aspi = Aspi;
    }

    public AplicativoBacante getBacan() {
        return Bacan;
    }

    public void setBacan(AplicativoBacante Bacan) {
        this.Bacan = Bacan;
    }

    public   ModelContrato getMod() {
        return mod;
    }

    public void setMod(  ModelContrato mod) {
        this.mod = mod;
    }
    public JTable LimpiarTable(JTable tabla){
        tablaModelo=(DefaultTableModel) tabla.getModel();
        int x=tablaModelo.getRowCount();
	for(int i=-1;i<(x-1);i++)
		tablaModelo.removeRow(0);
        return tabla;        
    }

    //metodo para enviar una tabla y reciva una tabla
  public JTable CargaInfContratos(JTable tabla,JTextField text){
      Bacante a;
       Aspirante as;
       Evaluacion ev;
        tablaModelo=(DefaultTableModel) tabla.getModel();
         System.out.print("000000000");
	try
	{
             System.out.print("11111111111");
            lista=mod.Contratos(text.getText());
            Iterator it=lista.iterator();
            while( it.hasNext() )
            {
                 System.out.print("222222222222");
                ex=(Contrato)it.next();
                ev=eva.CargaEvalu(ex.getAspirante(),"Codigo");
                a=Bacan.CArgaBacante(ev.getBacante());
                as=Aspi.CArgaAspirante(ev.getAspirante());
                tablaModelo.addRow
                (
                    new Object[]
                    {
                        as.getID(),as.getNombre(), as.getProfesion(), a.getNombre(),ex.getFechaini(),ex.getFechafinal()
                    }
                );
            }
	}catch(Exception er){
		JOptionPane.showMessageDialog(null, "Error al cargar la lista de Contratos de la base de datos, se presento " +
                        "\n un inconveniente al tratar de Buscar la informacion requerida " +
                        "\n por el sistema." +
                        "\n."+er.toString() , "Error en la Carga de Informacion...",JOptionPane.DEFAULT_OPTION);
	}
        return tabla;
    }

    public Contrato CargaContrato(JTextField text){
      Bacante a;
       Aspirante as;
       Evaluacion ev;
        Contrato  ex=null;
  System.out.print("****************1");
	try
	{
            lista=mod.Contratos(text.getText());
           ex=(Contrato)lista.getFirst();
           
               

              System.out.print("****************2");
	}catch(Exception er){
		JOptionPane.showMessageDialog(null, "Error al cargar la lista de Cliente de la base de datos, se presento " +
                        "\n un inconveniente al tratar de Buscar la informacion requerida " +
                        "\n por el sistema." +
                        "\n."+er.toString() , "Error en la Carga de Informacion...",JOptionPane.DEFAULT_OPTION);
	}
    System.out.print("****************1");
        return ex;
    }
//buscar informacion de las linkedlist control de la informacion y hasNext
}
